/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

监控项自定义监控相关接口
自定义监控项相关接口，提供自定义监控数据上报功能

OpenAPI spec version: v2
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef MonitorApiModel_h
#define MonitorApiModel_h
#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKMonitor/MonitorModel.h>


@interface MonitorDescribeMetricsRequest:JDCloudRequest

/// 资源的类型，取值vm, lb, ip, database 等。&lt;a href&#x3D;&quot;https://docs.jdcloud.com/cn/monitoring/api/describeservices?content&#x3D;API&amp;SOP&#x3D;JDCloud&quot;&gt;describeServices&lt;/a&gt;：查询己接入云监控的产品线列表，当产品线下有多个分组时，查询分组对应的监控项，serviceCode请传对应分组的groupCode字段值
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// metric的类型，取值0(控制台展示)、1(内部使用，控制台不展示)、2(所有).默认取0
@property (strong,nonatomic,nonnull)  NSNumber*  type;
-(id) initWithRegion:(NSString *)regionId
serviceCode:(NSString*)serviceCode
type:(NSNumber*)type;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
serviceCode:(NSString*)serviceCode
type:(NSNumber*)type;

@end

@interface MonitorDeleteAlarmsRequest:JDCloudRequest

/// 规则id
@property (strong,nonatomic,nonnull)  NSString*  alarmId;
-(id) initWithRegion:(NSString *)regionId
alarmId:(NSString*)alarmId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
alarmId:(NSString*)alarmId;

@end

@interface MonitorDescribeAlarmContactsRequest:JDCloudRequest

/// 当前所在页，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 页面大小，默认为20；取值范围[1, 100]
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
/// 联系人类型。0,联系人分组; 1,联系人
@property (strong,nonatomic,nonnull)  NSNumber*  referenceType;
/// 规则id
@property (strong,nonatomic,nonnull)  NSString*  alarmId;
-(id) initWithRegion:(NSString *)regionId
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
referenceType:(NSNumber*)referenceType
alarmId:(NSString*)alarmId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
referenceType:(NSNumber*)referenceType
alarmId:(NSString*)alarmId;

@end

@interface MonitorDeleteAlarmsResult : NSObject
/// Success
 @property (strong,nonatomic,nonnull)  NSNumber*  success;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithSuccess:(NSNumber*) success;
@end

@interface MonitorUpdateAlarmResult : NSObject
/// 创建成功的规则id
 @property (strong,nonatomic,nonnull)  NSString*  alarmId;
/// 成功则返回true
 @property (strong,nonatomic,nonnull)  NSNumber*  success;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithAlarmId:(NSString*) alarmId

    success:(NSNumber*)success;
@end

@interface MonitorCreateAlarmResult : NSObject
/// 创建成功的规则id
 @property (strong,nonatomic,nonnull)  NSString*  alarmId;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithAlarmId:(NSString*) alarmId;
@end

@interface MonitorEnableAlarmsResult : NSObject
/// Success
 @property (strong,nonatomic,nonnull)  NSNumber*  success;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithSuccess:(NSNumber*) success;
@end

@interface MonitorDescribeMetricsForAlarmRequest:JDCloudRequest

/// 产品线
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 产品类型，如redis2.8cluster(集群)\redis2.8MS(主从)。当serviceCode与product同时指定时，product优先级更高
@property (strong,nonatomic,nonnull)  NSString*  product;
/// 产品维度，必须指定serviceCode或product才生效。
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// metric类型，取值0、1；默认值：0（常规指标，用于控制台创建报警规则）、1（其它）
@property (strong,nonatomic,nonnull)  NSNumber*  metricType;
-(id) initWithRegion:(NSString *)regionId
serviceCode:(NSString*)serviceCode
product:(NSString*)product
dimension:(NSString*)dimension
metricType:(NSNumber*)metricType;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
serviceCode:(NSString*)serviceCode
product:(NSString*)product
dimension:(NSString*)dimension
metricType:(NSNumber*)metricType;

@end

@interface MonitorDescribeProductsForAlarmRequest:JDCloudRequest

/// 产品线，从产品线维度筛选
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 产品类型,从产品维度筛选、如redis2.8cluster\redis2.8instance。当serviceCode与product同时指定时，product优先级更高
@property (strong,nonatomic,nonnull)  NSString*  product;
-(id) initWithRegion:(NSString *)regionId
serviceCode:(NSString*)serviceCode
product:(NSString*)product;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
serviceCode:(NSString*)serviceCode
product:(NSString*)product;

@end

@interface MonitorEnableAlarmsRequest:JDCloudRequest

/// 告警规则的ID列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  alarmIds;
/// 启用:1,禁用0,
@property (strong,nonatomic,nonnull)  NSNumber*  state;
-(id) initWithRegion:(NSString *)regionId
alarmIds:(NSArray<NSString*>*)alarmIds
state:(NSNumber*)state;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
alarmIds:(NSArray<NSString*>*)alarmIds
state:(NSNumber*)state;

@end

@interface MonitorDescribeAlarmRequest:JDCloudRequest

/// 规则id
@property (strong,nonatomic,nonnull)  NSString*  alarmId;
-(id) initWithRegion:(NSString *)regionId
alarmId:(NSString*)alarmId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
alarmId:(NSString*)alarmId;

@end

@interface MonitorDescribeMetricsResult : NSObject
/// Metrics
 @property (strong,nonatomic,nonnull)  NSArray<MetricDetail*>*  metrics;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithMetrics:(NSArray<MetricDetail*>*) metrics;
@end

@interface MonitorDescribeMetricsResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeMetricsResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeMetricsResult*) result;
@end

@interface MonitorLastDownsampleRequest:JDCloudRequest

/// 资源的类型，取值vm, lb, ip, database 等。可用的serviceCode请使用describeServices接口查询
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 资源的维度。serviceCode下可用的dimension请使用describeServices接口查询
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 资源的uuid，支持多个resourceId批量查询，每个id用竖线分隔。 如：id1|id2|id3|id4
@property (strong,nonatomic,nonnull)  NSString*  resourceId;
/// 自定义标签
@property (strong,nonatomic,nonnull)  NSArray<MonitorTagFilter*>*  tags;
/// 查询时间范围的开始时间， UTC时间，格式：2016-12-11T00:00:00+0800（早于30d时，将被重置为30d）（注意在url中+要转译为%2B故url中为2016-12-11T00:00:00%2B0800）
@property (strong,nonatomic,nonnull)  NSString*  startTime;
/// 查询时间范围的结束时间， UTC时间，格式：2016-12-11T00:00:00+0800（为空时，将由startTime与timeInterval计算得出）（注意在url中+要转译为%2B故url中为2016-12-11T00:00:00%2B0800）
@property (strong,nonatomic,nonnull)  NSString*  endTime;
/// 查询的时间间隔，最大不超过30天，支持分钟级别,小时级别，天级别，例如：1m、1h、1d
@property (strong,nonatomic,nonnull)  NSString*  timeInterval;
/// 聚合方式：max avg min等,用于不同维度之间聚合
@property (strong,nonatomic,nonnull)  NSString*  aggrType;
/// 聚合方式：max avg min等,用于将维度内一个周期数据聚合为一个点的聚合方式,默认last
@property (strong,nonatomic,nonnull)  NSString*  downAggrType;
/// 监控项英文标识(id)
@property (strong,nonatomic,nonnull)  NSString*  metric;
-(id) initWithRegion:(NSString *)regionId
serviceCode:(NSString*)serviceCode
dimension:(NSString*)dimension
resourceId:(NSString*)resourceId
tags:(NSArray<MonitorTagFilter*>*)tags
startTime:(NSString*)startTime
endTime:(NSString*)endTime
timeInterval:(NSString*)timeInterval
aggrType:(NSString*)aggrType
downAggrType:(NSString*)downAggrType
metric:(NSString*)metric;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
serviceCode:(NSString*)serviceCode
dimension:(NSString*)dimension
resourceId:(NSString*)resourceId
tags:(NSArray<MonitorTagFilter*>*)tags
startTime:(NSString*)startTime
endTime:(NSString*)endTime
timeInterval:(NSString*)timeInterval
aggrType:(NSString*)aggrType
downAggrType:(NSString*)downAggrType
metric:(NSString*)metric;

@end

@interface MonitorDescribeMetricDataResult : NSObject
/// MetricDatas
 @property (strong,nonatomic,nonnull)  NSArray<MetricData*>*  metricDatas;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithMetricDatas:(NSArray<MetricData*>*) metricDatas;
@end

@interface MonitorDescribeMetricDataResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeMetricDataResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeMetricDataResult*) result;
@end

@interface MonitorDescribeMetricDataRequest:JDCloudRequest

/// 聚合方式，用于不同时间轴上的聚合。如balance产品同一个resourceId下存在port&#x3D;80和port&#x3D;8080等多种维度。可选值参考:sum、avg、min、max
@property (strong,nonatomic,nonnull)  NSString*  aggrType;
/// 采样方式，用于在时间轴维度上将聚合周期内的数据聚合为一个点。可选值参考：sum(聚合周期内的数据求和)、avg(求平均)、last(最新值)、min(最小值)、max(最大值)
@property (strong,nonatomic,nonnull)  NSString*  downSampleType;
/// 查询时间范围的开始时间， UTC时间，格式：2016-12-11T00:00:00+0800（注意在url中+要转译为%2B故url中为2016-12-11T00:00:00%2B0800）
@property (strong,nonatomic,nonnull)  NSString*  startTime;
/// 查询时间范围的结束时间， UTC时间，格式：2016-12-11T00:00:00+0800（为空时，将由startTime与timeInterval计算得出）（注意在url中+要转译为%2B故url中为2016-12-11T00:00:00%2B0800）
@property (strong,nonatomic,nonnull)  NSString*  endTime;
/// 时间间隔：1h，6h，12h，1d，3d，7d，14d，固定时间间隔，timeInterval默认为1h，当前时间往 前1h
@property (strong,nonatomic,nonnull)  NSString*  timeInterval;
/// 监控指标数据的维度信息,根据tags来筛选指标数据不同的维度
@property (strong,nonatomic,nonnull)  NSArray<MonitorTagFilter*>*  tags;
/// 是否对查询的tags分组
@property (strong,nonatomic,nonnull)  NSNumber*  groupBy;
/// 是否求速率
@property (strong,nonatomic,nonnull)  NSNumber*  rate;
/// 资源的类型，取值vm, lb, ip, database 等,&lt;a href&#x3D;&quot;https://docs.jdcloud.com/cn/monitoring/api/describeservices?content&#x3D;API&amp;SOP&#x3D;JDCloud&quot;&gt;describeServices&lt;/a&gt;：查询己接入云监控的产品线列表
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 资源的维度。查询serviceCode下可用的维度请使用describeServices接口
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 资源的uuid
@property (strong,nonatomic,nonnull)  NSString*  resourceId;
/// 监控项英文标识(id)
@property (strong,nonatomic,nonnull)  NSString*  metric;
-(id) initWithRegion:(NSString *)regionId
aggrType:(NSString*)aggrType
downSampleType:(NSString*)downSampleType
startTime:(NSString*)startTime
endTime:(NSString*)endTime
timeInterval:(NSString*)timeInterval
tags:(NSArray<MonitorTagFilter*>*)tags
groupBy:(NSNumber*)groupBy
rate:(NSNumber*)rate
serviceCode:(NSString*)serviceCode
dimension:(NSString*)dimension
resourceId:(NSString*)resourceId
metric:(NSString*)metric;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
aggrType:(NSString*)aggrType
downSampleType:(NSString*)downSampleType
startTime:(NSString*)startTime
endTime:(NSString*)endTime
timeInterval:(NSString*)timeInterval
tags:(NSArray<MonitorTagFilter*>*)tags
groupBy:(NSNumber*)groupBy
rate:(NSNumber*)rate
serviceCode:(NSString*)serviceCode
dimension:(NSString*)dimension
resourceId:(NSString*)resourceId
metric:(NSString*)metric;

@end

@interface MonitorDescribeServicesResult : NSObject
/// Services
 @property (strong,nonatomic,nonnull)  NSArray<ServiceInfoV2*>*  services;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithServices:(NSArray<ServiceInfoV2*>*) services;
@end

@interface MonitorDescribeServicesResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeServicesResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeServicesResult*) result;
@end

@interface MonitorLastDownsampleResult : NSObject
/// Items
 @property (strong,nonatomic,nonnull)  NSArray<LastDownsampleRespItem*>*  items;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithItems:(NSArray<LastDownsampleRespItem*>*) items;
@end

@interface MonitorDescribeServicesRequest:JDCloudRequest

/// 服务码列表
   /// filter name 为serviceCodes表示查询多个产品线的规则
@property (strong,nonatomic,nonnull)  NSArray<MonitorFilter*>*  filters;
/// 要查询的产品线类型   0：all    1：资源监控   2：其它   默认：1。若指定了查询的serviceCode，则忽略该参数
@property (strong,nonatomic,nonnull)  NSNumber*  productType;
-(id) initWithRegion:(NSString *)regionId
filters:(NSArray<MonitorFilter*>*)filters
productType:(NSNumber*)productType;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
filters:(NSArray<MonitorFilter*>*)filters
productType:(NSNumber*)productType;

@end

@interface MonitorLastDownsampleResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorLastDownsampleResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorLastDownsampleResult*) result;
@end

@interface MonitorDescribeProductsForAlarmResult : NSObject
/// ProductList
 @property (strong,nonatomic,nonnull)  NSArray<Product*>*  productList;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithProductList:(NSArray<Product*>*) productList;
@end

@interface MonitorDescribeProductsForAlarmResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeProductsForAlarmResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeProductsForAlarmResult*) result;
@end

@interface MonitorUpdateAlarmResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorUpdateAlarmResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorUpdateAlarmResult*) result;
@end

@interface MonitorDescribeAlarmResult : NSObject
/// 报警规则ID
 @property (strong,nonatomic,nonnull)  NSString*  alarmId;
/// 规则状态，当一个规则下同时存在报警、数据不足、正常的资源时，规则状态按 报警&gt;数据不足&gt;正常的优先级展示
   /// 监控项状态：-1 未启用 1正常，2告警，4数据不足
 @property (strong,nonatomic,nonnull)  NSNumber*  alarmStatus;
/// AlarmStatusList
 @property (strong,nonatomic,nonnull)  NSArray<NSNumber*>*  alarmStatusList;
/// BaseContact
 @property (strong,nonatomic,nonnull)  NSArray<BaseContact*>*  baseContact;
/// 创建时间
 @property (strong,nonatomic,nonnull)  NSString*  createTime;
/// 资源维度
 @property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 资源维度名称
 @property (strong,nonatomic,nonnull)  NSString*  dimensionName;
/// 是否启用, 1表示启用规则，0表示禁用规则，默认为1
 @property (strong,nonatomic,nonnull)  NSNumber*  enabled;
/// NoticeOption
 @property (strong,nonatomic,nonnull)  NSArray<NoticeOption*>*  noticeOption;
/// 资源类型
 @property (strong,nonatomic,nonnull)  NSString*  product;
/// 资源类型名称
 @property (strong,nonatomic,nonnull)  NSString*  productName;
/// ResourceOption
 @property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;
/// 规则名称，规则名称，最大长度42个字符，只允许中英文、数字、&#39;&#39;-&#39;&#39;和&quot;_&quot;
 @property (strong,nonatomic,nonnull)  NSString*  ruleName;
/// RuleOption
 @property (strong,nonatomic,nonnull)  RuleOptionDetail*  ruleOption;
/// 规则类型, 默认为resourceMonitor
 @property (strong,nonatomic,nonnull)  NSString*  ruleType;
/// 规则版本  v1  v2
 @property (strong,nonatomic,nonnull)  NSString*  ruleVersion;
/// 资源维度，指定监控数据实例的维度标签,如resourceId&#x3D;id。(请确认资源的监控数据带有该标签，否则规则会报数据不足)
 @property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;
/// WebHookOption
 @property (strong,nonatomic,nonnull)  WebHookOption*  webHookOption;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithAlarmId:(NSString*) alarmId

    alarmStatus:(NSNumber*)alarmStatus

    alarmStatusList:(NSArray<NSNumber*>*)alarmStatusList

    baseContact:(NSArray<BaseContact*>*)baseContact

    createTime:(NSString*)createTime

    dimension:(NSString*)dimension

    dimensionName:(NSString*)dimensionName

    enabled:(NSNumber*)enabled

    noticeOption:(NSArray<NoticeOption*>*)noticeOption

    product:(NSString*)product

    productName:(NSString*)productName

    resourceOption:(ResourceOption*)resourceOption

    ruleName:(NSString*)ruleName

    ruleOption:(RuleOptionDetail*)ruleOption

    ruleType:(NSString*)ruleType

    ruleVersion:(NSString*)ruleVersion

    tags:(NSMutableDictionary<NSString*,NSString*>*)tags

    webHookOption:(WebHookOption*)webHookOption;
@end

@interface MonitorDescribeAlarmResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeAlarmResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeAlarmResult*) result;
@end

@interface MonitorDescribeAlarmHistoryResult : NSObject
/// AlarmHistoryList
 @property (strong,nonatomic,nonnull)  NSArray<DescribedAlarmHistory*>*  alarmHistoryList;
/// 总页数
 @property (strong,nonatomic,nonnull)  NSNumber*  numberPages;
/// 总记录数
 @property (strong,nonatomic,nonnull)  NSNumber*  numberRecords;
/// 当前页码
 @property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 分页大小
 @property (strong,nonatomic,nonnull)  NSNumber*  pageSize;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithAlarmHistoryList:(NSArray<DescribedAlarmHistory*>*) alarmHistoryList

    numberPages:(NSNumber*)numberPages

    numberRecords:(NSNumber*)numberRecords

    pageNumber:(NSNumber*)pageNumber

    pageSize:(NSNumber*)pageSize;
@end

@interface MonitorDescribeAlarmHistoryResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeAlarmHistoryResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeAlarmHistoryResult*) result;
@end

@interface MonitorCreateAlarmResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorCreateAlarmResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorCreateAlarmResult*) result;
@end

@interface MonitorDescribeAlarmsResult : NSObject
/// AlarmList
 @property (strong,nonatomic,nonnull)  NSArray<DescribeGroupAlarm*>*  alarmList;
/// 总页数
 @property (strong,nonatomic,nonnull)  NSNumber*  numberPages;
/// 总记录数
 @property (strong,nonatomic,nonnull)  NSNumber*  numberRecords;
/// 当前页码
 @property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 分页大小
 @property (strong,nonatomic,nonnull)  NSNumber*  pageSize;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithAlarmList:(NSArray<DescribeGroupAlarm*>*) alarmList

    numberPages:(NSNumber*)numberPages

    numberRecords:(NSNumber*)numberRecords

    pageNumber:(NSNumber*)pageNumber

    pageSize:(NSNumber*)pageSize;
@end

@interface MonitorDescribeAlarmsResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeAlarmsResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeAlarmsResult*) result;
@end

@interface MonitorDescribeAlarmContactsResult : NSObject
/// ContactsList
 @property (strong,nonatomic,nonnull)  NSArray<DescribedNoticeContacts*>*  contactsList;
/// 报警联系人总数
 @property (strong,nonatomic,nonnull)  NSNumber*  total;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithContactsList:(NSArray<DescribedNoticeContacts*>*) contactsList

    total:(NSNumber*)total;
@end

@interface MonitorDescribeAlarmContactsResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeAlarmContactsResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeAlarmContactsResult*) result;
@end

@interface MonitorDescribeMetricsForAlarmResult : NSObject
/// Metrics
 @property (strong,nonatomic,nonnull)  NSArray<RuleMetricDetail*>*  metrics;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithMetrics:(NSArray<RuleMetricDetail*>*) metrics;
@end

@interface MonitorDescribeMetricsForAlarmResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDescribeMetricsForAlarmResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDescribeMetricsForAlarmResult*) result;
@end

@interface MonitorDeleteAlarmsResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorDeleteAlarmsResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorDeleteAlarmsResult*) result;
@end

@interface MonitorUpdateAlarmRequest:JDCloudRequest

/// 告警通知联系人
@property (strong,nonatomic,nonnull)  NSArray<BaseContact*>*  baseContact;
/// 资源维度，可用的维度请使用 describeProductsForAlarm接口查询
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 是否启用, 1表示启用规则，0表示禁用规则，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;
/// 通知策略
@property (strong,nonatomic,nonnull)  NSArray<NoticeOption*>*  noticeOption;
/// 资源类型, 可用的资源类型列表请使用 describeProductsForAlarm接口查询。
@property (strong,nonatomic,nonnull)  NSString*  product;
/// ResourceOption
@property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;
/// 规则名称，规则名称，最大长度42个字符，只允许中英文、数字、&#39;&#39;-&#39;&#39;和&quot;_&quot;
@property (strong,nonatomic,nonnull)  NSString*  ruleName;
/// RuleOption
@property (strong,nonatomic,nonnull)  RuleOption*  ruleOption;
/// 规则类型, 默认为resourceMonitor
@property (strong,nonatomic,nonnull)  NSString*  ruleType;
/// 资源维度，指定监控数据实例的维度标签,如resourceId&#x3D;id。(请确认资源的监控数据带有该标签，否则规则会报数据不足)
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;
/// WebHookOption
@property (strong,nonatomic,nonnull)  WebHookOption*  webHookOption;
/// 规则id
@property (strong,nonatomic,nonnull)  NSString*  alarmId;
-(id) initWithRegion:(NSString *)regionId
baseContact:(NSArray<BaseContact*>*)baseContact
dimension:(NSString*)dimension
enabled:(NSNumber*)enabled
noticeOption:(NSArray<NoticeOption*>*)noticeOption
product:(NSString*)product
resourceOption:(ResourceOption*)resourceOption
ruleName:(NSString*)ruleName
ruleOption:(RuleOption*)ruleOption
ruleType:(NSString*)ruleType
tags:(NSMutableDictionary<NSString*,NSString*>*)tags
webHookOption:(WebHookOption*)webHookOption
alarmId:(NSString*)alarmId;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
baseContact:(NSArray<BaseContact*>*)baseContact
dimension:(NSString*)dimension
enabled:(NSNumber*)enabled
noticeOption:(NSArray<NoticeOption*>*)noticeOption
product:(NSString*)product
resourceOption:(ResourceOption*)resourceOption
ruleName:(NSString*)ruleName
ruleOption:(RuleOption*)ruleOption
ruleType:(NSString*)ruleType
tags:(NSMutableDictionary<NSString*,NSString*>*)tags
webHookOption:(WebHookOption*)webHookOption
alarmId:(NSString*)alarmId;

@end

@interface MonitorDescribeAlarmHistoryRequest:JDCloudRequest

/// 当前所在页，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 页面大小，默认为20；取值范围[1, 100]
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
/// 产品线标识，同一个产品线下可能存在多个product，如(redis下有redis2.8cluster、redis4.0)
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 产品标识,默认返回该product下所有dimension的数据。eg:product&#x3D;redis2.8cluster（redis2.8cluster产品下包含redis2.8-shard与redis2.8-proxy、redis2.8-instance多个维度)。
@property (strong,nonatomic,nonnull)  NSString*  product;
/// 维度标识、指定该参数时，查询只返回该维度的数据。如redis2.8cluster下存在实例、分片等多个维度
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 正在报警, 取值为1
@property (strong,nonatomic,nonnull)  NSNumber*  isAlarming;
/// 报警的状态,1为报警恢复、2为报警、4为报警恢复无数据
@property (strong,nonatomic,nonnull)  NSNumber*  status;
/// 开始时间
@property (strong,nonatomic,nonnull)  NSString*  startTime;
/// 结束时间
@property (strong,nonatomic,nonnull)  NSString*  endTime;
/// 规则类型,默认查询1， 1表示资源监控，6表示站点监控,7表示可用性监控
@property (strong,nonatomic,nonnull)  NSNumber*  ruleType;
/// 规则名称模糊搜索
@property (strong,nonatomic,nonnull)  NSString*  ruleName;
/// serviceCodes - 产品线servicecode，精确匹配，支持多个
   /// resourceIds - 资源Id，精确匹配，支持多个（必须指定serviceCode才会在该serviceCode下根据resourceIds过滤，否则该参数不生效）
   /// alarmIds - 规则Id，精确匹配，支持多个
@property (strong,nonatomic,nonnull)  NSArray<MonitorFilter*>*  filters;
-(id) initWithRegion:(NSString *)regionId
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
serviceCode:(NSString*)serviceCode
product:(NSString*)product
dimension:(NSString*)dimension
isAlarming:(NSNumber*)isAlarming
status:(NSNumber*)status
startTime:(NSString*)startTime
endTime:(NSString*)endTime
ruleType:(NSNumber*)ruleType
ruleName:(NSString*)ruleName
filters:(NSArray<MonitorFilter*>*)filters;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
serviceCode:(NSString*)serviceCode
product:(NSString*)product
dimension:(NSString*)dimension
isAlarming:(NSNumber*)isAlarming
status:(NSNumber*)status
startTime:(NSString*)startTime
endTime:(NSString*)endTime
ruleType:(NSNumber*)ruleType
ruleName:(NSString*)ruleName
filters:(NSArray<MonitorFilter*>*)filters;

@end

@interface MonitorDescribeAlarmsRequest:JDCloudRequest

/// 当前所在页，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  pageNumber;
/// 页面大小，默认为20；取值范围[1, 100]
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
/// 产品线标识，同一个产品线下可能存在多个product，如(redis下有redis2.8cluster、redis4.0)
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 产品标识，如redis下分多个产品(redis2.8cluster、redis4.0)。同时指定serviceCode与product时，product优先生效
@property (strong,nonatomic,nonnull)  NSString*  product;
/// 产品下的维度标识，指定dimension时必须指定product
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 规则名称
@property (strong,nonatomic,nonnull)  NSString*  ruleName;
/// 规则类型, 1表示资源监控，6表示站点监控,7表示可用性监控
@property (strong,nonatomic,nonnull)  NSNumber*  ruleType;
/// 规则状态：1为启用，0为禁用
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;
/// 资源的规则状态  2：报警、4：数据不足
@property (strong,nonatomic,nonnull)  NSNumber*  ruleStatus;
/// 服务码或资源Id列表
   /// products - 产品product，精确匹配，支持多个
   /// resourceIds - 资源Id，精确匹配，支持多个（必须指定serviceCode、product或dimension，否则该参数不生效）
   /// alarmIds - 规则id，精确匹配，支持多个
@property (strong,nonatomic,nonnull)  NSArray<MonitorFilter*>*  filters;
-(id) initWithRegion:(NSString *)regionId
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
serviceCode:(NSString*)serviceCode
product:(NSString*)product
dimension:(NSString*)dimension
ruleName:(NSString*)ruleName
ruleType:(NSNumber*)ruleType
enabled:(NSNumber*)enabled
ruleStatus:(NSNumber*)ruleStatus
filters:(NSArray<MonitorFilter*>*)filters;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
pageNumber:(NSNumber*)pageNumber
pageSize:(NSNumber*)pageSize
serviceCode:(NSString*)serviceCode
product:(NSString*)product
dimension:(NSString*)dimension
ruleName:(NSString*)ruleName
ruleType:(NSNumber*)ruleType
enabled:(NSNumber*)enabled
ruleStatus:(NSNumber*)ruleStatus
filters:(NSArray<MonitorFilter*>*)filters;

@end

@interface MonitorEnableAlarmsResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorEnableAlarmsResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorEnableAlarmsResult*) result;
@end

@interface MonitorCreateAlarmRequest:JDCloudRequest

/// 告警通知联系人
@property (strong,nonatomic,nonnull)  NSArray<BaseContact*>*  baseContact;
/// 幂等性校验参数,最长36位,若两个请求clientToken相等，则返回第一次创建的规则id，只创建一次规则
@property (strong,nonatomic,nonnull)  NSString*  clientToken;
/// 资源维度，可用的维度请使用 describeProductsForAlarm接口查询
@property (strong,nonatomic,nonnull)  NSString*  dimension;
/// 是否启用, 1表示启用规则，0表示禁用规则，默认为1
@property (strong,nonatomic,nonnull)  NSNumber*  enabled;
/// 通知策略
@property (strong,nonatomic,nonnull)  NSArray<NoticeOption*>*  noticeOption;
/// 资源类型, 可用的资源类型列表请使用 describeProductsForAlarm接口查询。
@property (strong,nonatomic,nonnull)  NSString*  product;
/// ResourceOption
@property (strong,nonatomic,nonnull)  ResourceOption*  resourceOption;
/// 规则名称，规则名称，最大长度42个字符，只允许中英文、数字、&#39;&#39;-&#39;&#39;和&quot;_&quot;
@property (strong,nonatomic,nonnull)  NSString*  ruleName;
/// RuleOption
@property (strong,nonatomic,nonnull)  RuleOption*  ruleOption;
/// 规则类型, 默认为resourceMonitor
@property (strong,nonatomic,nonnull)  NSString*  ruleType;
/// 资源维度，指定监控数据实例的维度标签,如resourceId&#x3D;id。(请确认资源的监控数据带有该标签，否则规则会报数据不足)
@property (strong,nonatomic,nonnull)  NSMutableDictionary<NSString*,NSString*>*  tags;
/// WebHookOption
@property (strong,nonatomic,nonnull)  WebHookOption*  webHookOption;
-(id) initWithRegion:(NSString *)regionId
baseContact:(NSArray<BaseContact*>*)baseContact
clientToken:(NSString*)clientToken
dimension:(NSString*)dimension
enabled:(NSNumber*)enabled
noticeOption:(NSArray<NoticeOption*>*)noticeOption
product:(NSString*)product
resourceOption:(ResourceOption*)resourceOption
ruleName:(NSString*)ruleName
ruleOption:(RuleOption*)ruleOption
ruleType:(NSString*)ruleType
tags:(NSMutableDictionary<NSString*,NSString*>*)tags
webHookOption:(WebHookOption*)webHookOption;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
baseContact:(NSArray<BaseContact*>*)baseContact
clientToken:(NSString*)clientToken
dimension:(NSString*)dimension
enabled:(NSNumber*)enabled
noticeOption:(NSArray<NoticeOption*>*)noticeOption
product:(NSString*)product
resourceOption:(ResourceOption*)resourceOption
ruleName:(NSString*)ruleName
ruleOption:(RuleOption*)ruleOption
ruleType:(NSString*)ruleType
tags:(NSMutableDictionary<NSString*,NSString*>*)tags
webHookOption:(WebHookOption*)webHookOption;

@end

@interface MonitorPutMetricDataRequest:JDCloudRequest

/// 数据参数
@property (strong,nonatomic,nonnull)  NSArray<MetricDataCm*>*  metricDataList;
-(id) initWithRegion:(NSString *)regionId
metricDataList:(NSArray<MetricDataCm*>*)metricDataList;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
metricDataList:(NSArray<MetricDataCm*>*)metricDataList;

@end

@interface MonitorPutMetricDataResult : NSObject
/// 全部写入成功为true，否则为false
 @property (strong,nonatomic,nonnull)  NSNumber*  success;
/// ErrMetricDataList
 @property (strong,nonatomic,nonnull)  NSArray<MetricDataList*>*  errMetricDataList;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithSuccess:(NSNumber*) success

    errMetricDataList:(NSArray<MetricDataList*>*)errMetricDataList;
@end

@interface MonitorPutMetricDataResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property MonitorPutMetricDataResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(MonitorPutMetricDataResult*) result;
@end

#endif /* MonitorApiModel_h */
